package com.jk1123.igs.common.vo;

/**
 * @author huyoufu <https://github.com/huyoufu>
 * @TIME 2024/1/3 14:02
 * @description
 * 为啥这里使用的接口 来定义 而不是使用枚举的原因
 * 原因是我们不可能枚举所有的情况 事实上随着业务的发展 各种业务情况一直在变更
 * 那为啥还要定义这个接口呢
 * 因为你永远想象不到后来的人会怎么使用R 对象 会怎么传递code值
 * 所以:
 * //私有化构造
 *     private R() {
 *     }
 *     //私有化构造
 *     private R(int code, String message, T data) {
 *         this.code = code;
 *         this.message = message;
 *         this.data = data;
 *     }
 *  R对象都是私有化构造 不允许你使用随便创建,要求你必须给一个 Rcode对象 来提醒使用者不要乱搞
 *
 */
public interface RCode {
    RCode SUCCESS=new RCodeDefault(1,"操作成功");
    RCode FAIL=new RCodeDefault(-1,"操作失败");
    RCode SIGN_ERROR = new RCodeDefault(-2, "签名验证失败");
    RCode PARAMS_MISS=new RCodeDefault(401,"参数缺失");

    RCode RATE_LIMIT=new RCodeDefault(429,"请求过于频繁");
    RCode SYSTEM_ERROR=new RCodeDefault(500,"系统内部异常");

    int getCode();
    String getMessage();
}
